//初识泛型：泛型方法（静态泛型方法）

/**
 * 1. 写一个泛型方法（求数组的最大值）；
 * 2. 该泛型方法若要比较大小，需继承Comparable接口才能够使用compareTo方法，
 *    所以传给泛型方法的值的类型也必须实现Comparable接口；
 */
class Alg {
    public<T extends Comparable<T>> T findMax(T[] array) {//1
        T max = array[0];
        for (int i = 0; i < array.length; i++) {
            if (max.compareTo(array[i]) < 0) {
                max = array[i];
            }
        }
        return max;
    }
}

class Alg2 {
    public static <T extends Comparable<T>> T findMax(T[] array) {//静态的泛型方法
        T max = array[0];
        for (int i = 0; i < array.length; i++) {
            if (max.compareTo(array[i]) < 0) {
                max = array[i];
            }
        }
        return max;
    }
}

public class Test {
    public static void main(String[] args) {
        Integer[] array = {1, 102, 88, 4, 5};
        Integer max = Alg2.<Integer>findMax(array);//调用静态泛型方法不需要实例化，直接用类名来调
        System.out.println(max);
    }



    public static void main1(String[] args) {
        Integer[] array = {1, 2, 88, 4, 5};
        Alg alg = new Alg();
        Integer max = alg.<Integer>findMax(array);//2  传参：传类型和方法参数/
        System.out.println(max);
    }
}
